/*
 * Copyright (c) 2001, 2002 Boris Pruessmann and others. All rights reserved.
 * This program and the accompanying materials are made available under the
 * terms of the Common Public License v0.5 which accompanies this distribution,
 * and is available at http://www.eclipse.org/legal/cpl-v05.html
 * 
 * Contributors: Boris Pruessmann - Initial implementation.
 */
package net.sourceforge.perforce.core.api;

import java.util.Date;

import net.sourceforge.perforce.core.resources.RemoteFile;

import org.eclipse.core.runtime.IAdaptable;

/**
 * @version $Revision: 488 $
 * @author <a href="mailto:bpruessmann@users.sourceforge.net">Boris Pr??mann</a>
 * 
 *         TODO: Remove IAdaptable
 */
public interface ILogEntry extends IAdaptable {
  //----------------------------------------------------------------------------
  // --------- Methods

  /**
   * Gets the depot filename .
   * 
   * @return the filename in depot syntax.
   */
  String getDepotFilename();

  /**
   * Gets the revision.
   * 
   * @return the revision number.
   */
  Integer getRevision();

  /**
   * Gets the changelist.
   * 
   * @return the changelist that created the revision.
   */
  Integer getChangelist();

  /**
   * Gets the action.
   * 
   * @return array of action that created the revision.
   */
  String[] getActions();

  /**
   * Gets the type.
   * 
   * @return the file type.
   */
  String getType();

  /**
   * Gets the time.
   * 
   * @return the submission time.
   */
  Date getTime();

  /**
   * Gets the user.
   * 
   * @return the user.
   */
  String getUser();

  /**
   * Gets the client.
   * 
   * @return the client.
   */
  String getClient();

  /**
   * Gets the description.
   * 
   * @return description of changes.
   */
  String getDescription();

  /**
   * Returns a handle to the RemoteFile
   * 
   * @return the corresponding remote file instance.
   */
  RemoteFile getRemoteFile();

  /**
   * Returns whether the file was deleted with the revision
   * 
   * @return true if resource if marked as deleted, false otherwise.
   */
  boolean isDeleted();
}
